package com.itany.corejava.code08_集合.list集合;

import java.util.*;

/**
 * @author MissChen
 * @date 2024年03月04日 15:56
 */
public class Test02_遍历 {
    public static void main(String[] args) {
        // test();
        // test01();
        // test02();
        test03();
    }
    public static void test(){
        List<Integer> list=new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9));

        //使用普通for循环进行遍历
        // for(int i=0;i<list.size();i++){
        //     Integer num=list.get(i);
        //     System.out.println(num);
        // }

        //增强for循环遍历集合
        // for(Integer num:list){
        //     System.out.println(num);
        // }

        //创建Iterator迭代器，将集合中的数据在迭代器中进行迭代遍历出来
        Iterator<Integer> it=list.iterator();
        while(it.hasNext()){
            Integer num=it.next();
            System.out.println(num);
        }

    }

    public static void test01(){
        List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));

        //升序方式删除元素，删除第一个元素后，其他元素索引会随之改变
        // for(int i=0;i<list.size();i++){
        //     Integer num=list.get(i);
        //     //删除索引为偶数的元素
        //     // 1,3,5,6,8,9--->3,5,8,9
        //     if(i%2==0){
        //         // list.remove(i);//根据索引删除
        //         list.remove(num);
        //     }
        // }
        // System.out.println(list);

        //降序遍历
        for(int i=list.size()-1;i>=0;i--){
            Integer num=list.get(i);
            if(i%2==0){

                // 1,3,5,6,8,9--->3,6,9
                list.remove(num);
            }
        }
        System.out.println(list);

    }
    public static void test02(){
        List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));
        for(Integer num:list){

            //增强for循环在遍历集合的过程中不能添加或者删除集合中的元素。否则会抛出ConcurrentModificationException
            // list.add(10);
            // list.remove(2);
            list.set(2,200);
        }
        System.out.println(list);
    }
    public static void test03(){
        List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));
        Iterator<Integer> it=list.iterator();
        while(it.hasNext()){
            Integer num=it.next();//获取下一个迭代的元素
            if(num%2==0){

                // 该方式同样不能在遍历的过程中添加或者删除集合中的元素。否则会抛出ConcurrentModificationException 异常
                // list.add(100);
                // list.remove(num);
                // list.set(1,7);//可以
                it.remove();//通过迭代器删除当前迭代的元素
            }
        }
        System.out.println(list);
    }
}
